export const validateName = (_rule, value, callback) => {
    if (value === '') {
        callback(new Error('请输入姓名'))
    } else {
        // 正则表达式校验
        const regex = /^[\u4e00-\u9fa5]{2,6}$/;
        if (!regex.test(value)) {
            callback(new Error('请输入合法姓名'))
        } else {
            callback()
        }
    }
}

export const validateNameCanBeNull = (_rule, value, callback) => {
    if (value != '') {
        const regex = /^[\u4e00-\u9fa5]{2,6}$/;
        if (!regex.test(value)) {
            callback(new Error('请输入合法姓名'))
        } else {
            callback()
        }
    } else {
        callback()
    }
}

export const validateSex = (_rule, value, callback) => {
    if (value == '') {
        callback(new Error('请选择有效的性别'))
    } else {
        callback()
    }
}

export const validateNumber = (_rule, value, callback) => {
    if (value == '') {
        callback(new Error('请输入数字'))
    } else {
        // 正则表达式校验
        const regex = /^\d+$/;
        if (!regex.test(value)) {
            callback(new Error('请输入合法数字'))
        } else {
            callback()
        }
    }
}
//1-50的数字
export const validateNumber1 = (_rule, value, callback) => {
    if (value == '') {
        callback(new Error('请输入数字'))
    } else {
        // 正则表达式校验
        const regex = /^(?:[1-9]|[1-4][0-9]|50)$/;
        if (!regex.test(value)) {
            callback(new Error('请输入1-50的数字'))
        } else {
            callback()
        }
    }
}
//1-100的数字
export const validateNumber2 = (_rule, value, callback) => {
    if (value == '') {
        callback(new Error('请输入数字'))
    } else {
        // 正则表达式校验
        const regex = /^(?:[1-9]|[1-9][0-9]|100)$/;
        if (!regex.test(value)) {
            callback(new Error('请输入1-100的数字'))
        } else {
            callback()
        }
    }
}
export const validateIdentityId = (_rule, value, callback) => {
    if (value === '') {
        callback(new Error('请输入身份证号'))
    } else {
        // 正则表达式校验
        const regex = /^\d{17}[\dXx]$/;
        if (!regex.test(value)) {
            callback(new Error('请输入合法身份证号'))
        } else {
            callback()
        }
    }
}

export const validateMail = (_rule, value, callback) => {
    if (value === '') {
        callback(new Error('请输入邮箱'))
    } else {
        // 正则表达式校验
        const regex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
        if (!regex.test(value)) {
            callback(new Error('请输入合法邮箱'))
        } else {
            callback()
        }
    }
}

export const validateUsername = (_rule, value, callback) => {
    if (value === '') {
        callback(new Error('请输入6-20位用户名,不包含特殊符号'))
    } else {
        // 正则表达式校验
        const regex = /^[a-zA-Z0-9!@#$%^&*()-_+=<>?]{6,20}$/;
        if (!regex.test(value)) {
            callback(new Error('请输入6-20位用户名,不包含特殊符号'))
        } else {
            callback()
        }
    }
}

export const validatePassword = (_rule, value, callback) => {
    if (value === '') {
        callback(new Error('请输入8-20位密码,至少含一位字母和数字,不包含特殊符号'))
    } else {
        // 正则表达式校验
        const regex = /^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9!@#$%^&*()-_+=<>?]{8,20}$/;
        if (!regex.test(value)) {
            callback(new Error('请输入8-20位密码,至少含一位字母和数字,不包含特殊符号'))
        } else {
            callback()
        }
    }
}
export const validatePassword2 = (_rule, value, callback) => {
    if (!value) {
      callback(new Error('密码不能为空，请输入8-20位密码，至少包含一位大写字母、一位小写字母、和一位数字'));
    } else {
      // 正则表达式，用于检查密码是否包含至少一个大写和小写字母、一个数字，且长度在8到20位之间
      const regex = /(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,20}$/;  
  
      if (!regex.test(value)) {
        callback(new Error('密码格式不正确，至少包含一位大写字母、一位小写字母、和一位数字'));
      } else {
        callback();
      }
    }
  };

export const validateConfirm = (_rule, value, callback, password) => {
    if (value === '') {
        callback(new Error('请输入密码后确认密码'))
    } else {
        if (value != password) {
            callback(new Error('两次密码不匹配'))
        } else {
            callback()
        }
    }
}

export const validateArea = (_rule, value, callback) => {
    if (pageStep.value < 4) {
        if (ruleForm.district_id === -1 || ruleForm.city_id === -1 || ruleForm.school == '') {
            return callback(new Error('学校为空或不存在'))
        } else if (!checkSchoolExists()) {
            callback(new Error('输入的学校不存在'))
        } else {
            callback()
        }
    } else if (pageStep.value == 4) {
        if (ruleForm.district_id === -1 || ruleForm.city_id === -1) {
            callback(new Error('请选择市和区'))
        } else {
            callback()
        }
    } else if (pageStep.value == 5) {
        if (ruleForm.city_id === -1) {
            callback(new Error('请选择城市'))
        } else {
            callback()
        }
    }

}

export const validateAge = (_rule, value, callback) => {
    let n = Number(age1.value)
    if (n && n > 0 && n < 100) {
        ruleForm.age = n;
        callback()
    } else {
        callback(new Error('请输入1-99的数字'))
    }
}
//ok
export const validateCode = (_rule, value, callback) => {
    if (pageStep.value > 1 && ruleForm.code == '') {
        callback(new Error('请输入授权码'))
    } else {
        callback()
    }
}
// ok
export const validatePhone = (_rule, value, callback) => {
    if (value === '') {
        callback(new Error('请输入11位手机号'))
    } else {
        // 正则表达式校验
        const regex = /^1[3-9]\d{9}$/;
        if (!regex.test(value)) {
            callback(new Error('请输入合法手机号'))
        } else {
            callback()
        }
    }
}
export const validateGrade = (_rule, value, callback) => {
    if (value === '') {
        callback(new Error('请选择年级'))
    } else {
        callback()
    }
}
export const validateGradeAndClass = (_rule, value, callback) => {
    if (pageStep.value == 1) {
        if (ruleForm.grade == '') {
            callback(new Error('请选择年级'))
        }
        else if (ruleForm.className == '') {
            callback(new Error('请选择班级'))
        } else if (!checkGradeExists) {
            callback(new Error('所选年级不存在'))
        } else if (!checkClassExists) {
            callback(new Error('所选班级不存在'))
        } else {
            callback()
        }
    } else if (pageStep.value == 2) {
        if (ruleForm.grade == '') {
            callback(new Error('请选择年级'))
        } else if (!checkGradeExists) {
            callback(new Error('所选年级不存在'))
        }
        else {
            callback()
        }
    } else {
        callback()
    }
}

export const validateAddress = (_rule, value, callback) => {
    if (value === '') {
        callback(new Error('请输入家庭住址'))
    } else {
        callback()
    }
}
export const validateStay = (_rule, value, callback) => {
    if (value === '') {
        callback(new Error('请选择居住方式'))
    } else {
        callback()
    }
}
export const validateNation = (_rule, value, callback) => {
    if (value === '' || !NationOptions.includes(ruleForm.nation)) {
        callback(new Error('请输入合法民族,需要包含族字,如:汉族'))
    } else {
        callback()
    }
}
export const validateFamilyType = (_rule, value, callback) => {
    if (value === '') {
        callback(new Error('请选择家庭类型'))
    } else {
        callback()
    }
}
export const validateSiblingRank = (_rule, value, callback) => {
    if (value === '' || !SiblingRankOptions.includes(ruleForm.siblingRank)) {
        callback(new Error('请输入家庭排行(学生)，例如独子，长子/女，次子/女，三子/女，其他'))
    } else {
        callback()
    }
}
export const validateFatherEdu = (_rule, value, callback) => {
    if (value === '') {
        callback(new Error('请选择父亲的学历'))
    } else {
        callback()
    }
}
export const validateMotherEdu = (_rule, value, callback) => {
    if (value === '') {
        callback(new Error('请选择母亲的学历'))
    } else {
        callback()
    }
}